package com.sanpu.kxe.rxservice.interfaces;

import com.sanpu.kxe.rxservice.MetaBean;

import java.util.List;
import java.util.Map;

import okhttp3.MultipartBody;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.QueryMap;
import rx.Observable;

/**
 * Description：银行卡模块接口定义
 * Created by 薛勇军 on 2018/7/16.
 */

public interface BankService {

    /**
     * 添加银行卡
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/bank/insertUrmBank.html")
    Observable<MetaBean> insertUrmBank(@FieldMap Map<String, String> param);

    /**
     * 添加信用卡
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/bank/insertCreditBank.html")
    Observable<MetaBean> insertCreditBank(@FieldMap Map<String, String> param);

    /**
     * 我的银行卡列表
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/bank/selectUrmBankPage.html")
    Observable<MetaBean> selectUrmBankPage(@FieldMap Map<String, String> param);

    /**
     * 获取结算卡审核状态
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/bank/getDefBankStatus.html")
    Observable<MetaBean> getDefBankStatus(@FieldMap Map<String, String> param);

    /**
     * 查询银行卡信息
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/bank/bankInfo.html")
    Observable<MetaBean> bankInfo(@FieldMap Map<String, String> param);

    /**
     * 修改银行卡预留手机号
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/bank/updateBankRsdTel.html")
    Observable<MetaBean> updateBankRsdTel(@FieldMap Map<String, String> param);

    /**
     * 修改默认结算卡
     * @param param 请求参数
     * @return
     */
    @Multipart
    @POST("app/client/bank/updateDefUrmBank.html")
    Observable<MetaBean> updateDefUrmBank(@QueryMap Map<String, String> param, @Part List<MultipartBody.Part> parts);

    /**
     * 修改默认结算卡(银行卡识别和人脸对比)
     * @param param 请求参数
     * @return
     */
    @Multipart
    @POST("app/client/bank/ocrBankCardAndFaceMatch.html")
    Observable<MetaBean> ocrBankCardAndFaceMatch(@QueryMap Map<String, String> param, @Part List<MultipartBody.Part> parts);

    /**
     * 修改默认结算卡（鉴权）
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/bank/modifyDefUrmBank.html")
    Observable<MetaBean> modifyDefUrmBank(@FieldMap Map<String, String> param);

    /**
     * 修改默认结算卡（无需照片和审核）
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/bank/modifyDefaultCard.html")
    Observable<MetaBean> modifyDefaultCard(@FieldMap Map<String, String> param);

    /**
     * 银行卡解绑
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/bank/deleteUrmBank.html")
    Observable<MetaBean> deleteUrmBank(@FieldMap Map<String, String> param);

    /**
     * 提现
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/bank/userWithdraw.html")
    Observable<MetaBean> userWithdraw(@FieldMap Map<String, String> param);
}
